package ai.leinao.notify.core.template;

import lombok.NonNull;

import java.io.Serializable;
import java.util.Collections;
import java.util.Map;

/**
 * 通知消息模板
 * <p>
 * 消息模板，不同服务商需要实现不同的模板
 *
 * @author zhong.wang
 * @date 2025/7/7
 */
public interface Template extends Serializable {

    /**
     * 获取模板ID
     * @return
     */
    String getTemplateId();

    /**
     * 获取变量定义
     * @param variableName
     * @return
     */
    default VariableDefinition getVariable(String variableName){
        return getVariables().getOrDefault(variableName,null);
    }

    /**
     * 获取变量定义
     * @return
     */
    @NonNull
    default Map<String,VariableDefinition> getVariables(){
        return Collections.emptyMap();
    }

    /**
     * 渲染变量
     * @param context
     */
    default void renderVariable(Map<String,Object> context){}
}
